﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Obsluga.Gui;

namespace APP_PGM.UZYTKI
{
    public class WypelnienieComboBox
    {
        public int ID { get; private set; }
        public string Nazwa { get; private set; }

        public WypelnienieComboBox(int id, string nazwa)
        {
            ID = id;
            Nazwa = nazwa;
        }

        public override string ToString()
        {
            return Nazwa;
        }

        public bool Equals(WypelnienieComboBox other)
        {
            if (ReferenceEquals(null, other)) return false;
            if (ReferenceEquals(this, other)) return true;
            return other.ID == ID && Equals(other.Nazwa, Nazwa);
        }

        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj)) return false;
            if (ReferenceEquals(this, obj)) return true;
            if (obj.GetType() != typeof (WypelnienieComboBox)) return false;
            return Equals((WypelnienieComboBox) obj);
        }

        public override int GetHashCode()
        {
            unchecked
            {
                return (ID*397) ^ (Nazwa != null ? Nazwa.GetHashCode() : 0);
            }
        }

        public static bool operator ==(WypelnienieComboBox left, WypelnienieComboBox right)
        {
            return Equals(left, right);
        }

        public static bool operator !=(WypelnienieComboBox left, WypelnienieComboBox right)
        {
            return !Equals(left, right);
        }


        public static void Wypelnij(ComboBox combo, DataTable dane, int indeksKolumnyID, int indeksKolumnyOpisow)
        {
            combo.Items.Clear();
            try
            {
                foreach (DataRow wiersz in dane.Rows)
                {

                    int id = (int)wiersz[indeksKolumnyID];
                    string opis = (string)wiersz[indeksKolumnyOpisow];

                    WypelnienieComboBox wypelnienie = new WypelnienieComboBox(id, opis);
                    combo.Items.Add(wypelnienie);

                }
            }catch(Exception)
            {
                Komunikaty.pokazBlad("Nie można załadować danych do pola wyboru: "+combo.Name);
            }
        }

        public static void Wypelnij(ComboBox combo, DataTable dane, string nazwaKolumnyID, string nazwaKolumnyOpis)
        {
            combo.Items.Clear();
            try
            {
                foreach (DataRow wiersz in dane.Rows)
                {

                    int id = (int)wiersz[nazwaKolumnyID];
                    string opis = (string)wiersz[nazwaKolumnyOpis];

                    WypelnienieComboBox wypelnienie = new WypelnienieComboBox(id, opis);
                    combo.Items.Add(wypelnienie);

                }
            }
            catch (Exception)
            {
                Komunikaty.pokazBlad("Nie można załadować danych do pola wyboru: " + combo.Name);
            }
            combo.SelectedItem = null;
        }

        public static void Zaznacz(ComboBox comboBox, int id)
        {
            var elementy = comboBox.Items;
            foreach (WypelnienieComboBox elem in elementy)
            {
                if(elem.ID == id)
                {
                    comboBox.SelectedItem = elem;
                    return;
                }
            }
            comboBox.SelectedItem = null;
        }

        public static WypelnienieComboBox PobierzZaznaczenie(ComboBox comboBox)
        {
            if (comboBox.SelectedItem != null)
            {
                return (WypelnienieComboBox) comboBox.SelectedItem;
            }
            return null;
        }
    }


}
